package com.jacken.mars.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jacken.mars.entity.base.BasePageRequest;
import com.jacken.mars.entity.SysUser;
import com.jacken.mars.entity.base.PageInfo;
import com.jacken.mars.entity.req.RegisterUserReq;
import com.jacken.mars.entity.req.SysUserReq;
import com.jacken.mars.entity.vo.SysUserDetailVo;
import com.jacken.mars.entity.vo.SysUserInfoVo;
import com.jacken.mars.entity.vo.SysUserListVo;

/**
 * 接口
 *
 * @Author wq
 * @Date 2020-12-15
 **/
public interface SysUserService extends IService<SysUser> {

    /**
     * 分页
     *
     * @param query query
     * @return IPage<SysUser>
     */
    IPage<SysUser> page(BasePageRequest query);


    /**
     * 发送验证码
     *
     * @param mobile mobile
     */
    void sendSmsCode(String mobile);

    /**
     * 新增sysUser
     *
     * @param sysUser sysUser
     */
    void add(SysUserReq sysUser);

    /**
     * 删除用户ID
     *
     * @param id id
     */
    void delete(Integer id);

    /**
     * 编辑管理员
     *
     * @param req req
     */
    void updateSysUser(SysUserReq req);

    /**
     * 详情
     *
     * @param id 用户ID
     * @return sysUser
     */
    SysUserDetailVo detail(Integer id);

    /**
     * 退出
     *
     * @param token token
     */
    void logout(String token);

    /**
     * 登录
     *
     * @param mobile 手机号
     * @param code   验证码
     * @return R
     */
    String login(String mobile, String code);

    /**
     * 获取用户信息
     *
     * @param token
     * @return
     */
    SysUserInfoVo userInfo(String token);

    /**
     * 查询用户列表
     *
     * @param req req
     * @return
     */
    PageInfo<SysUserListVo> sysUserPage(SysUserReq req);

    /**
     * 登录版本二(图形验证码)
     *
     * @param s
     * @param mobile
     * @param uuid
     * @return
     */
    String v2Login(String s, String mobile, String uuid);

    /**
     * 根据电话号码查询用户
     *
     * @param mobile
     * @return
     */
    SysUser selectUserByMobile(String mobile);

    /**
     * 采用账号密码登录
     *
     * @param mobile   手机号
     * @param password 密码
     * @param code     验证码
     * @param uuid     UUID
     * @return
     */
    String v3Login(String mobile, String password, String code, String uuid);


    /**
     * 用户注册
     */
    void register(RegisterUserReq req);
}
